#!/bin/bash

# EventFD共享注册中心测试脚本

echo "=== EventFD共享内存注册中心演示 ==="
echo

# 检查是否已编译
if [ ! -f "../build_debug/demos_eventfd_shared_registry" ]; then
    echo "错误: 请先编译程序"
    echo "运行: cd ../build_debug && make demos_eventfd_shared_registry"
    exit 1
fi

PROGRAM="../build_debug/demos_eventfd_shared_registry"

# 清理可能存在的共享内存
echo "清理旧的共享内存..."
sudo rm -f /dev/shm/eventfd_registry_shm 2>/dev/null

echo "启动演示程序..."
echo

# 启动3个订阅者进程（后台运行）
echo "启动订阅者进程1..."
$PROGRAM subscriber &
SUB1_PID=$!

sleep 1

echo "启动订阅者进程2..."
$PROGRAM subscriber &
SUB2_PID=$!

sleep 1

echo "启动订阅者进程3..."
$PROGRAM subscriber &
SUB3_PID=$!

sleep 2

# 启动发布者进程
echo "启动发布者进程..."
$PROGRAM publisher &
PUB_PID=$!

echo
echo "进程列表:"
echo "  订阅者1 PID: $SUB1_PID"
echo "  订阅者2 PID: $SUB2_PID"  
echo "  订阅者3 PID: $SUB3_PID"
echo "  发布者  PID: $PUB_PID"
echo

# 等待发布者完成
wait $PUB_PID

echo
echo "发布者任务完成，等待5秒后清理..."
sleep 5

# 清理进程
echo "清理订阅者进程..."
kill $SUB1_PID $SUB2_PID $SUB3_PID 2>/dev/null
wait $SUB1_PID $SUB2_PID $SUB3_PID 2>/dev/null

# 清理共享内存
echo "清理共享内存..."
sudo rm -f /dev/shm/eventfd_registry_shm 2>/dev/null

echo
echo "演示完成！"
echo
echo "这个演示展示了:"
echo "1. 多个订阅者进程同时注册到不同topic"
echo "2. 发布者向各个topic发布消息"
echo "3. 基于EventFD的高效跨进程通信"
echo "4. 自动的心跳检测和死亡进程清理"
echo "5. 共享内存中维护完整的注册表状态"


